package com.liuqing.www.数据库介绍.database;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


/**
 * 文件名：DBUtils.java
 * 包名：com.database
 * 类名：DBUtils
 * 描述：<br/>
 *  　　便于数据库操作的工具类
 * 修改记录：<br/>
 *  　　
 * 作者：Administrator
 * 创建日期：2009-10-21 16:06:35
 * 版本：1.0
 */
public class DBUtils {
	/**
	 * 描述：<br/>
	 *  　　按指定的 SQL 语句查询数据
	 * @param sql
	 * @param sqlParams
	 * @return 查询结果。失败则返回 null
	 */
	public static CachedRowSet get(String sql,ArrayList<Object> sqlParams) {
		CachedRowSet rs = null;
		Connection con = null;
		try {
			con = DBConnection.getDSConnection();
			rs = SqlQuery.findAll(con, sql, sqlParams);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(con != null)
				try {
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
		return rs;
	}
	
	/**
	 * 描述：<br/>
	 *  　　批量更新或删除记录
	 * @param sqlList
	 * @return
	 */
	public  static Boolean updateOrDelete(List<String> sqlList) {
		Boolean flag = false;
		Connection con = null;
		try {
			con = DBConnection.getDSConnection();
			int[] i = AllConstants.update(sqlList, con);
			if(i != null && i[0] > 0)
				flag = true;
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(con != null)
				try {
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
		return flag;
	}
	/**
	 * 描述：<br/>
	 *  　　更新或删除单条记录
	 * @param sql
	 * @return
	 */
	public  static Boolean updateOrDelete(String sql) {
		List<String> sqlList = new ArrayList<String>();
		sqlList.add(sql);
		return updateOrDelete(sqlList);
	}
	
	/**
	 * 描述：<br/>
	 *  　　根据 SQL 语句插入记录
	 * @param sql
	 * @return 新插入记录的ID，插入失败返回 -1
	 */
	public static Long insert(String sql) {
		Long id = -1L;
		Connection con = null;
		try {
			con = DBConnection.getDSConnection();
			id = AutoIncrement.getNextID(con, sql);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(con != null)
				try {
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
		return id;
	}
}
